package com.lion.utils;

import java.util.Random;

/**
 * @author Chris Chan
 * Create on 2021/11/30 20:44
 * Use for: 编码工具
 * Explain:
 */
public class CodecUtil {
    /**
     * 构建一个n位的罪及密码
     *
     * @param n
     * @return
     */
    public static String buildRndPassword(int n) {
        //字符池
        String charPool = "abcdefghijklmnopqrstuvwxyz1234567890";
        return buildCodeByCharPool(n, charPool);
    }

    /**
     * 构建随机手机短信验证码
     * 这个应该同时构建一个短信编号，并设定一个过期时间
     * 在过期时间之内，不用重建未使用的短信验证码
     *
     * @param n
     * @return
     */
    public static String buildRndVerify(int n) {
        //字符池
        String charPool = "1234567890";
        return buildCodeByCharPool(n, charPool);
    }

    /**
     * 根据长度和字符池，生成一个随机码
     *
     * @param count
     * @param charPool
     * @return
     */
    public static String buildCodeByCharPool(int count, String charPool) {
        int length = charPool.length();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < count; i++) {
            int idx = new Random().nextInt(length);
            sb.append(charPool.charAt(idx));
        }
        return sb.toString();
    }

    /**
     * 构建一个随机编码
     * 使用雪花算法
     *
     * @return
     */
    public static String buildRndCode() {
        //todo 暂时
        return String.format("%06d", new Random().nextInt(1000000));
    }
}
